Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / components / messages / conversationMessageHelpers.js

Displaying Raw • Download


meshchatx/src/frontend/components/messages/conversationMessageHelpers.js 9f75e3db181925ddd253f7fb231af81f9fb8c013 (9f75e3db) Text, 4.69 KB

T8b949e/**
* Pure helpers for LXMF message display predicates and clipboard/drag image extraction.
*/

T8b949e/**
* @param {object} msg
* @returns {boolean}
*/
Tff7b72export Tff7b72function Te6edf3hasFileAttachmentsTb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3files Tff7b72= Te6edf3msgTff7b72?Tb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3file_attachmentsTb4b4b4;
Tff7b72return Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3filesTb4b4b4) Tff7b72&& Te6edf3filesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {object} msg
* @returns {boolean}
*/
Tff7b72export Tff7b72function Te6edf3isTelemetryOnlyTb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hasContent Tff7b72= Te6edf3msgTb4b4b4.Te6edf3content Tff7b72&& Te6edf3msgTb4b4b4.Te6edf3contentTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72!== Ta5d6ff""Tb4b4b4;
Tff7b72const Te6edf3hasAttachments Tff7b72= Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3image Tff7b72|| Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3audio Tff7b72|| Te6edf3hasFileAttachmentsTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hasTelemetry Tff7b72= Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3telemetry Tff7b72|| Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3telemetry_streamTb4b4b4;
Tff7b72const Te6edf3hasCommands Tff7b72= Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3commands Tff7b72&& Te6edf3msgTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3commandsTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[Ta5d6ff"0x01"Tb4b4b4]Tb4b4b4)Tb4b4b4;

Tff7b72return Tff7b72!Te6edf3hasContent Tff7b72&& Tff7b72!Te6edf3hasAttachments Tff7b72&& Tff7b72!Tff7b72!Tb4b4b4(Te6edf3hasTelemetry Tff7b72|| Te6edf3hasCommandsTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {object} msg
* @returns {boolean}
*/
Tff7b72export Tff7b72function Te6edf3hasRenderableContentTb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3content Tff7b72&& Te6edf3msgTb4b4b4.Te6edf3contentTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72!== Ta5d6ff""Tb4b4b4) Tff7b72return Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3imageTb4b4b4) Tff7b72return Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3audioTb4b4b4) Tff7b72return Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3hasFileAttachmentsTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3telemetry Tff7b72|| Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3telemetry_streamTb4b4b4) Tff7b72return Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3commands Tff7b72&& Te6edf3msgTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3commandsTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[Ta5d6ff"0x01"Tb4b4b4] Tff7b72|| Te6edf3cTb4b4b4[Ta5d6ff"1"Tb4b4b4] Tff7b72|| Te6edf3cTb4b4b4[Ta5d6ff"0x1"Tb4b4b4]Tb4b4b4)Tb4b4b4) Tff7b72return Tff7b72trueTb4b4b4;
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {object} chatItem
* @param {(item: object) => boolean} shouldHideAutoImageCaption
* @returns {boolean}
*/
Tff7b72export Tff7b72function Te6edf3isFileOnlyMessageTb4b4b4(Te6edf3chatItemTb4b4b4, Te6edf3shouldHideAutoImageCaptionTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3msg Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hasFileAttachmentsTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3image Tff7b72|| Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3audioTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3content Tff7b72= Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3content Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3content Tff7b72&& Tff7b72!Te6edf3shouldHideAutoImageCaptionTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3reply_to_hashTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3telemetry Tff7b72|| Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3telemetry_streamTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3commands Tff7b72&& Te6edf3msgTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3commandsTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[Ta5d6ff"0x01"Tb4b4b4] Tff7b72|| Te6edf3cTb4b4b4[Ta5d6ff"1"Tb4b4b4] Tff7b72|| Te6edf3cTb4b4b4[Ta5d6ff"0x1"Tb4b4b4]Tb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {object} chatItem
* @param {(item: object) => boolean} shouldHideAutoImageCaption
* @returns {boolean}
*/
Tff7b72export Tff7b72function Te6edf3hasMessageBubbleTb4b4b4(Te6edf3chatItemTb4b4b4, Te6edf3shouldHideAutoImageCaptionTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3lxmf_messageTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3isImageOnlyMessageTb4b4b4(Te6edf3chatItemTb4b4b4, Te6edf3shouldHideAutoImageCaptionTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3hasRenderableContentTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {object} chatItem
* @param {(item: object) => boolean} shouldHideAutoImageCaption
* @returns {boolean}
*/
Tff7b72export Tff7b72function Te6edf3isImageOnlyMessageTb4b4b4(Te6edf3chatItemTb4b4b4, Te6edf3shouldHideAutoImageCaptionTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3msg Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3imageTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3audio Tff7b72|| Te6edf3hasFileAttachmentsTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3content Tff7b72= Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3content Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3content Tff7b72&& Tff7b72!Te6edf3shouldHideAutoImageCaptionTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3reply_to_hashTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3telemetry Tff7b72|| Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3telemetry_streamTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3commands Tff7b72&& Te6edf3msgTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3commandsTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[Ta5d6ff"0x01"Tb4b4b4] Tff7b72|| Te6edf3cTb4b4b4[Ta5d6ff"1"Tb4b4b4] Tff7b72|| Te6edf3cTb4b4b4[Ta5d6ff"0x1"Tb4b4b4]Tb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {DataTransfer | null | undefined} dt
* @returns {File[]}
*/
Tff7b72export Tff7b72function Te6edf3collectImageFilesFromDataTransferTb4b4b4(Te6edf3dtTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3dtTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3out Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3seen Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3pushIfImage Tff7b72= Tb4b4b4(Te6edf3fTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fTff7b72?Tb4b4b4.Te6edf3typeTff7b72?Tb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"image/"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3k Tff7b72= Ta5d6ff`Tffd700${Te6edf3fTb4b4b4.Te6edf3nameTffd700}Ta5d6ff:Tffd700${Te6edf3fTb4b4b4.Te6edf3sizeTffd700}Ta5d6ff:Tffd700${Te6edf3fTb4b4b4.Te6edf3lastModifiedTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3seenTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3kTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3seenTb4b4b4.Te6edf3addTb4b4b4(Te6edf3kTb4b4b4)Tb4b4b4;
Te6edf3outTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3dtTb4b4b4.Te6edf3filesTff7b72?Tb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3dtTb4b4b4.Te6edf3filesTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tb4b4b4{
Te6edf3pushIfImageTb4b4b4(Te6edf3dtTb4b4b4.Te6edf3filesTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3outTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3outTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3dtTb4b4b4.Te6edf3itemsTff7b72?Tb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3dtTb4b4b4.Te6edf3itemsTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3item Tff7b72= Te6edf3dtTb4b4b4.Te6edf3itemsTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3itemTb4b4b4.Te6edf3kind Tff7b72=== Ta5d6ff"file" Tff7b72&& Te6edf3itemTb4b4b4.Te6edf3typeTff7b72?Tb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"image/"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3f Tff7b72= Te6edf3itemTb4b4b4.Te6edf3getAsFileTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3pushIfImageTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3outTb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {ClipboardEvent} event
* @returns {File[]}
*/
Tff7b72export Tff7b72function Te6edf3extractClipboardImageFilesTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3cd Tff7b72= Te6edf3eventTb4b4b4.Te6edf3clipboardDataTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3cdTff7b72?Tb4b4b4.Te6edf3itemsTff7b72?Tb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3imageBlobs Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3cdTb4b4b4.Te6edf3itemsTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3item Tff7b72= Te6edf3cdTb4b4b4.Te6edf3itemsTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3itemTb4b4b4.Te6edf3kind Tff7b72=== Ta5d6ff"file" Tff7b72&& Te6edf3itemTb4b4b4.Te6edf3typeTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"image/"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3f Tff7b72= Te6edf3itemTb4b4b4.Te6edf3getAsFileTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3fTb4b4b4) Tb4b4b4{
Te6edf3imageBlobsTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3imageBlobsTb4b4b4;
Tb4b4b4}


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────